#include <iostream>
using namespace std;

template<size_t n>
struct fractional {
    const static size_t value = fractional<n - 1>::value * n;
};

template<>
struct fractional<0> {
    const static size_t value = 1;
};

int main() {
    cout << "5! = " << fractional<3>::value;
    return 0;
}
